package com.htl.reflection.test;

import com.htl.reflection.entity.Cat;

import java.lang.reflect.Method;

public class Reflection__test5 {
    public static void main(String[] args) throws Exception {
        // 获取Class
        Class clazz = Cat.class;
        // 获取公有方法（自身以及从父类继承的）
        Method[] methods = clazz.getMethods();
        for (Method method : methods) {
            System.out.println(method);
        }
        System.out.println("==============================================================================");

        Method method = clazz.getMethod("setId", Integer.class);
        System.out.println(method);
        System.out.println("==============================================================================");

        // 获取对象
        Object o = clazz.getConstructor(null).newInstance(null);
        // 获取setId方法
        Method setId = clazz.getMethod("setId", Integer.class);
        // 获取setName方法
        Method setName = clazz.getMethod("setName", String.class);
        // 调用方法并赋值
        setId.invoke(o, 2);
        setName.invoke(o,"可可");
        System.out.println(o);

    }
}
